import Taro from '@tarojs/taro';
import { wechatLogin } from '../services/account';

/**
 * Promise封装wx.checkSession
 */
function checkSession () {
  return new Promise(function (resolve, reject) {
    Taro.checkSession({
      success: function () {
        resolve(true);
      },
      fail: function () {
        reject(false);
      }
    })
  });
}

/**
 * Promise封装wx.login
 */
export function wxLogin () {
  return new Promise(function (resolve, reject) {
    Taro.login({
      success: (res) => {
        // console.log(`loginRes:${JSON.stringify(res)}`)
        if (res.code) {
          // resolve(res);
          const { code } = res;
          Taro.setStorageSync('code', code);

          wechatLogin(
            { code }
          ).then(loginRes => {
            // console.log(`loginRes:${JSON.stringify(loginRes)}`)
            // //存储用户信息
            // Taro.setStorageSync('userInfo', loginRes);
            // const { status, token } = loginRes.data;
            // if (status === 1) {
            //   Taro.setStorageSync('token', loginRes.data.token);
            // }
            resolve(loginRes.data);
          }).catch(err => {
            // console.log('登录错误')
            // console.log(`err:${JSON.stringify(err)}`)
            // if (err.code === 418 && err.msg === '微信ID不存在') {
            if (!err.success) {
              Taro.navigateTo({
                url: '/pages/login/login'
              })
            }
            // reject(err);
          })
        } else {
          reject(res);
        }
      },
      fail: function (err) {
        // console.log(`loginErr:${JSON.stringify(err)}`)
        reject(err);
      }
    });
  });
}

/**
 * Promise封装wx.login
 */
export function getWxCode () {
  return new Promise(function (resolve, reject) {
    Taro.login({
      success: function (res) {
        if (res.code) {
          resolve(res)
        }
      },
      fail: function (err) {
        // console.log(`loginErr:${JSON.stringify(err)}`)
        reject(err);
      }
    });
  });
}


export function userInfo () {
  return new Promise(function (resolve, reject) {
    Taro.getUserInfo({
      success: function (res) {
        console.log(`userInfo:${JSON.stringify(res)}`)
        resolve(res)
      },
      fail: function (err) {
        reject(err);
      }
    });
  });
}
/**
 * 调用微信登录
 */
export function loginByWeixin () {
  return new Promise(function (resolve, reject) {
    Taro.getUserProfile({
      desc: '完善用户资料',
      success: function (resUser) {
        // console.log('获取成功')
        // console.log(`userInfo:${JSON.stringify(userInfo)}`)

        // console.log(`resUser:${JSON.stringify(resUser)}`)
        // console.log(`userInfo:${JSON.stringify(resUser.rawData)}`)
        // console.log(`code:${res.code}`)
        // console.log(`rawData:${resUser.rawData}`)
        // console.log(typeof resUser.rawData)
        // resolve(res)
        // 请求数据组合
        // let loginData = JSON.parse(resUser.rawData);
        // loginData.code = res.code;
        // 获取Code
        login().then((res) => {
          if (res.code) {
            let loginData = JSON.parse(resUser.rawData);
            loginData.iv = resUser.iv;
            loginData.code = res.code;
            // // 微信登录
            wechatLogin(
              loginData
            ).then(loginRes => {
              console.log(`loginRes:${JSON.stringify(loginRes)}`)
              // //存储用户信息
              // Taro.setStorageSync('userInfo', loginRes);
              Taro.setStorageSync('token', loginRes.token);
              // Taro.setStorageSync('authState', loginRes.authState);

              resolve(loginRes);
            }).catch(err => {
              console.log('登录错误')
              console.log(`err:${JSON.stringify(err)}`)
              reject(err);
            })
          }
        }).catch(() => {
          console.log('login获取Code错误')
        })
        // // 微信登录
        // loginByWeXin(
        //   loginData
        // ).then(loginRes => {
        //   console.log(`loginRes:${JSON.stringify(loginRes)}`)
        //   // //存储用户信息
        //   Taro.setStorageSync('userInfo', loginRes);
        //   Taro.setStorageSync('token', loginRes.token);
        //   resolve(loginRes);
        // }).catch(err => {
        //   reject(err);
        // })
      },
      fail: function (err) {
        console.log(`err:${JSON.stringify(err)}`)
        reject(err);
      },
      SuccessCallbackResult: function () { }
    });
    // return login().then((res) => {
    //   // console.log(`res:${JSON.stringify(res)}`)
    //   // 获取到了code,去请求个人信息
    //   if (res.code) {
    //     Taro.getUserProfile({
    //       desc: '完善用户资料',
    //       success: function (resUser) {
    //         console.log('获取成功')
    //         // console.log(`resUser:${JSON.stringify(resUser)}`)
    //         // console.log(`resUser:${JSON.stringify(resUser)}`)
    //         // console.log(`userInfo:${JSON.stringify(resUser.rawData)}`)
    //         // console.log(`code:${res.code}`)
    //         // console.log(`rawData:${resUser.rawData}`)
    //         // console.log(typeof resUser.rawData)
    //         // resolve(res)
    //         // 请求数据组合
    //         // let loginData = JSON.parse(resUser.rawData);
    //         // loginData.code = res.code;
    //         // // 微信登录
    //         // loginByWeXin(
    //         //   loginData
    //         // ).then(loginRes => {
    //         //   console.log(`loginRes:${JSON.stringify(loginRes)}`)
    //         //   // //存储用户信息
    //         //   Taro.setStorageSync('userInfo', loginRes);
    //         //   Taro.setStorageSync('token', loginRes.token);
    //         //   resolve(loginRes);
    //         // }).catch(err => {
    //         //   reject(err);
    //         // })
    //       },
    //       fail: function (err) {
    //         console.log(`err:${JSON.stringify(err)}`)
    //         reject(err);
    //       },
    //       SuccessCallbackResult: function () { }
    //     });
    //   }

    // }).catch((err) => {
    //   console.log('前面就错误了')
    //   reject(err);
    // })
  });
}

/**
 * 判断用户是否登录
 */
export function checkLogin () {
  return new Promise(function (resolve, reject) {
    if (Taro.getStorageSync('userInfo') && Taro.getStorageSync('token')) {
      checkSession().then(() => {
        resolve(true);
      }).catch(() => {
        reject(false);
      });
    } else {
      reject(false);
    }
  });
}
